package edu.nctu.csie.jichang.database.model.datavalue;

import edu.nctu.csie.jichang.database.model.cell.AbstractRootElement;
import edu.nctu.csie.jichang.database.util.DBException;
import edu.nctu.csie.jichang.database.util.StringUtil;

public abstract class DataValue<T> extends AbstractRootElement<DataValue<T>> {

	public DataValue(String pValue){
		super(pValue);
	}

	@Override
	public boolean isSame(DataValue<T> pElement) {
		if (pElement instanceof DataValue<?>) {
			DataValue<?> tValue = (DataValue<?>) pElement;
			if(StringUtil.isNotEmptyOrSpace(tValue.getName()) && StringUtil.isNotEmptyOrSpace(getName())){
				return getName().equals(tValue.getName());
			}
		}
		return false;
	}

	/**
	 * 取得原始物件型態
	 */
	private T value;
	public T getValue() {
		// TODO
		if(value != null) throw new DBException("還沒實作");
		return value;
	}
	public void setValue(T value) {
		this.value = value;
	}
	@Override
	public String toString() {
		return getName() != null ? getName() : "null";
	}
}